package com.mumu.system.service.impl;

import com.mumu.dao.BaseDao;
import com.mumu.system.dao.AuthUserDao;
import com.mumu.system.model.AuthUser;
import com.mumu.system.service.UserService;
import com.mumu.system.vo.AuthUserVO;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Created by Administrator on 2017/8/16.
 */
@Service
public class UserServiceImpl implements UserService {

	@Autowired private BaseDao<AuthUser> baseDao;
	@Autowired private AuthUserDao authUserDao;

	 /**
     * 
     * @CachePut也可以声明一个方法支持缓存功能。 
     * 与@Cacheable不同的是使用@CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果，
     * 而是每次都会执行该方法，并将执行结果以键值对的形式存入指定的缓存中。
     *
     */
	@Override
	@CachePut("userList") // 每次都会执行方法，并将结果存入指定的缓存中
	public List<AuthUser> selectAll() {
		return baseDao.selectAll();
	}
	
	// 因为配置文件继承了CachingConfigurerSupport，所以没有指定key的话就是用默认KEY生成策略生成,我们这里指定了KEY
    //@Cacheable(value = "userInfo", key = "'findUser' + #id", condition = "#id%2==0")
    // value属性指定Cache名称
    // 使用key属性自定义key
    // condition属性指定发生的条件(如上示例表示只有当user的id为偶数时才会进行缓存)
    @Override
    @Cacheable(value = "userInfo", key = "'getUserById' + #id")
    public AuthUserVO getUserById(Integer id) {
    	AuthUserVO authUserVO = authUserDao.getUserById(id);
        return authUserVO;
    }
  
}
